/**
 * @file JSONDocument.h
 */
#ifndef _JSONDOCUMENT_H_
#define _JSONDOCUMENT_H_

#include "../common/BaseObject.h"
#include "../io/Reader.h"

namespace cppflib
{

namespace collections { 
   namespace tree { class MultiChildTree; } 
}

namespace json
{

class JSONObject;

/**
 *  A class which is analogous to XML Document interface
 */
class _DLLAPI JSONDocument : public BaseObject
{
private:
    collections::tree::MultiChildTree *pTree;

private:
	JSONDocument(void);

public:
	virtual ~JSONDocument(void);
    JSONObject *GetRootJSONObject();

    PUBLIC JSONDocument * Parse(pcwstr_t jsonFilePath);
    PUBLIC JSONDocument * Parse(io::Reader &reader);
};

} // end of namespace json

} // end of namespace cppflib


#endif
